React Lazy Loading: Kodeoppdeling av komponenter for optimalisert ytelse | MLOG | MLOG ); } export default ImageGallery;

Og Image.js-komponenten:


import React from 'react';

const Image = ({ src, alt }) => {
  return {alt};
};

export default Image;

I dette eksempelet er hvert bilde pakket inn i en <Suspense>-komponent, sÄ en laste-melding vil bli vist for hvert bilde mens det lastes inn. Dette forhindrer at hele siden blokkeres mens bildene lastes ned.

Avanserte teknikker og hensyn

1. Feilgrensninger

NÄr du bruker lazy loading, er det viktig Ä hÄndtere potensielle feil som kan oppstÄ under innlastingsprosessen. Feilgrensninger kan brukes til Ä fange disse feilene og vise en fallback-UI. Du kan lage en feilgrensekomponent som dette:


import React, { Component } from 'react';

class ErrorBoundary extends Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }

  static getDerivedStateFromError(error) {
    // Oppdater tilstanden slik at neste gjengivelse vil vise fallback-UI.
    return { hasError: true };
  }

  componentDidCatch(error, errorInfo) {
    // Du kan ogsÄ logge feilen til en feilrapporteringstjeneste
    console.error(error, errorInfo);
  }

  render() {
    if (this.state.hasError) {
      // Du kan gjengi en hvilken som helst tilpasset fallback-UI
      return 

Noe gikk galt.

; } return this.props.children; } } export default ErrorBoundary;

Pakk deretter <Suspense>-komponenten med <ErrorBoundary>:



  Laster...}>
    
  


Hvis en feil oppstÄr mens du laster inn MyComponent, vil <ErrorBoundary> fange den og vise fallback-UI-en.

2. Server-Side Rendering (SSR) og Lazy Loading

Lazy loading kan ogsÄ brukes i forbindelse med server-side rendering (SSR) for Ä forbedre den fÞrste innlastingstiden for applikasjonen din. Det krever imidlertid litt ekstra konfigurasjon. Du mÄ sÞrge for at serveren kan hÄndtere dynamiske importer riktig, og at de lazy-lastede komponentene hydreres riktig pÄ klientsiden.

VerktĂžy som Next.js og Gatsby.js gir innebygd stĂžtte for lazy loading og kodeoppdeling i SSR-miljĂžer, noe som gjĂžr prosessen mye enklere.

3. ForhÄndslasting av Lazy-Loaded Komponenter

I noen tilfeller kan det hende du vil forhÄndsinnlaste en lazy-loaded komponent fÞr den faktisk trengs. Dette kan vÊre nyttig for komponenter som sannsynligvis vil bli gjengitt snart, for eksempel komponenter som er plassert under the fold, men som sannsynligvis vil bli rullet inn i visningen. Du kan forhÄndsinnlaste en komponent ved Ä kalle import()-funksjonen manuelt:


import('./MyComponent'); // ForhÄndsinnlast MyComponent

Dette vil begynne Ä laste komponenten i bakgrunnen, slik at den er tilgjengelig raskere nÄr den faktisk gjengis.

4. Dynamiske importer med Webpack Magic Comments

Webpacks «magic comments» gir en mÄte Ä tilpasse navnene pÄ de genererte kodebitene. Dette kan vÊre nyttig for feilsÞking og analyse av applikasjonens buntstruktur. For eksempel:


const MyComponent = React.lazy(() => import(/* webpackChunkName: "my-component" */ './MyComponent'));

Dette vil opprette en kodebit som heter «my-component.js» (eller lignende) i stedet for et generisk navn.

5. UnngÄ vanlige fallgruver

Eksempler og bruksomrÄder i den virkelige verden

Lazy loading kan brukes pÄ et bredt spekter av scenarier for Ä forbedre ytelsen til React-applikasjoner. Her er noen eksempler:

Eksempel: Internasjonal e-handelsnettsted

Se for deg et e-handelsnettsted som selger produkter globalt. Ulike land kan ha forskjellige valutaer, sprÄk og produktkataloger. I stedet for Ä laste inn alle dataene for hvert land pÄ forhÄnd, kan du bruke lazy loading til Ä laste inn dataene som er spesifikke for brukerens plassering, bare nÄr de besÞker nettstedet.


const CurrencyFormatter = React.lazy(() => import(`./CurrencyFormatter/${userCountry}`))
const ProductCatalog = React.lazy(() => import(`./ProductCatalog/${userCountry}`))

function ECommerceSite() {
  const userCountry = getUserCountry(); // Funksjon for Ă„ bestemme brukerens land

  return (
    Laster innhold for din region...}>
      
      
    
  );
}

Konklusjon

Lazy loading og kodeoppdeling av komponenter er kraftige teknikker for Ä optimalisere ytelsen til React-applikasjoner. Ved Ä laste inn komponenter bare nÄr de trengs, kan du redusere den fÞrste innlastingstiden betydelig, forbedre brukeropplevelsen og forbedre SEO-en din. Reacts innebygde React.lazy()- og <Suspense>-komponenter gjÞr det enkelt Ä implementere lazy loading i prosjektene dine. Omfavn disse teknikkene for Ä bygge raskere, mer responsive og mer engasjerende webapplikasjoner for et globalt publikum.

Husk Ä alltid vurdere brukeropplevelsen nÄr du implementerer lazy loading. Gi informative fallback-UI-er, hÄndter potensielle feil pÄ en elegant mÄte, og analyser applikasjonens ytelse nÞye for Ä sikre at du oppnÄr Þnsket resultat. Ikke vÊr redd for Ä eksperimentere med forskjellige tilnÊrminger og finne den beste lÞsningen for dine spesifikke behov.